4.4 . Configuración del entorno

Establece un buen ambiente de trabajo mediante la creación de dos nuevos ficheros de inicio para el shell bash. Estando en el sistema como usuario lfs , ejecuta el siguiente comando para crear un nuevo .bash_profile:

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

Si inicia sesión como usuario lfs , el intérprete de comandos inicial es un intérprete de ingreso que lee el archivo /etc/profile del sistema anfitrión (que posiblemente contenga algunos ajustes de variables de entorno ) y luego .bash_profile . El comando env -i.../bin/bash en el archivo bash_profile sustituye al shell que se está ejecutando por uno nuevo con un entorno completamente vacío, excepto por el HOME , TERM, y las variables PS1. Esto asegura que no haya variables de entorno indeseadas o dañinas procedentes del sistema anfitrión que se filtran dentro del entorno de compilación . La técnica aquí usada consigue el objetivo de garantizar un ambiente de desarrollo limpio .

La nueva instancia de la shell es una shell de no ingreso (no-login) que no lee el archivo /etc/profile o .bash_profile , sino más bien lee el archivo .bashrc en su lugar . Crea el archivo .bashrc ahora:

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF

El comando set + h desactiva la función hash de bash. Hashing es normalmente una útil función, -bash usa una tabla de dispersión para recordar la ruta completa de los ejecutables, evitando búsquedas reiteradas en el PATH para encontrar el mismo binario . Sin embargo , las nuevas herramientas se deben utilizar tan pronto como sean instalados . Al desactivar esta característica, el shell siempre buscará en el PATH cuando un programa se va a ejecutar . Como tal, el intérprete de comandos encontrará las herramientas recién compiladas en $ LFS / tools tan pronto como estén disponibles , sin recordar una anterior versión del mismo programa en un lugar diferente.

Establecer la máscara de creación de ficheros ( umask ) a 022 asegura que los archivos y directorios recién creados sólo pueden ser escritos por su propietario , pero son legibles y ejecutables por cualquiera ( asumiendo como modos predeterminados de llamada al sistema (2) , los nuevos archivos van a terminar con los permisos 644 y los directorios 755 ) .

La variable LFSdebe establecerse en el punto de montaje elegido.

La variable LC_ALL controla la localización de ciertos programas, haciendo que sus mensajes sigan las convenciones para un determinado país . Si el sistema anfitrión utiliza una versión de Glibc anterior a la 2.2.4 , tener LC_ALL establecida a algo diferente a " POSIX " o " C" ( en este capítulo) puede causar problemas si sales del entorno chroot e intentas regresar más tarde. Establecer LC_ALL a " POSIX " o " C" ( ambos son equivalentes ) asegura que todo funcionará como se espera en el entorno chroot.

La variable LFS_TGT establece una no predeterminada, pero compatible, descripción de la máquina para su uso en la construcción de nuestro compilador y enlazador así como cuando compilemos nuestras principales herramientas temporales. Más información está contenida en la Sección 5.2, " Notas técnicas sobre las herramientas " .

Al añadir / tools / bin al principio del PATH, todos los programas instalados en el Capítulo 5 son recogidos por el shell inmediatamente después de su instalación. Esto, combinado con la desactivación de hash , limita el riesgo de utilizar los antiguos programas del anfitrión cuando dichos programas están disponibles en el entorno del capítulo 5 .

Por último, para tener el entorno preparado por completo para construir las herramientas temporales , carga el perfil de usuario recién creado:

source ~/.bash_profile